home *** CD-ROM | disk | FTP | other *** search
/ Java Primer Plus / Java Primer Plus (Waite Group Proess)(1996).iso / chapter15 / ServerThread.java < prev    next >
Text File  |  1995-12-31  |  1KB  |  84 lines

  1. import java.net.Socket;
  2. import java.io.IOException;
  3. import java.io.BufferedInputStream;
  4. import java.io.DataInputStream;
  5. import java.io.BufferedOutputStream;
  6. import java.io.DataOutputStream;
  7. import java.awt.*;
  8.  
  9. public class ServerThread extends Thread {
  10.  
  11.     static Point All[] = new Point[10];
  12.  
  13.     static {
  14.             for (int j=0;j<10;++j) 
  15.           All[j] = new Point(0,0);
  16.         }
  17.  
  18.     int myall;
  19.     Socket mySocket;
  20.     DataInputStream datain;
  21.     DataOutputStream dataout;
  22.  
  23.     public ServerThread(Socket m,int me) throws IOException {
  24.       int g;
  25.     
  26.        mySocket = m;
  27.        myall = me;
  28.  
  29.        datain = new DataInputStream(new BufferedInputStream(mySocket.getInputStream()));
  30.        dataout = new DataOutputStream(new BufferedOutputStream(mySocket.getOutputStream()));
  31.  
  32.        }
  33.  
  34.     public void run() {
  35.     int g;
  36.  
  37.     try {
  38.      while (talk()) 
  39.       yield();
  40.  
  41.       mySocket.close();
  42.       } catch (IOException E);
  43.  
  44.     synchronized(All[myall]) All[myall].move(0,0);
  45.     }
  46.  
  47.         private boolean talk() throws IOException {
  48.     int g;
  49.     int x,y;
  50.  
  51.        x = datain.read();
  52.        y = datain.read();
  53.  
  54.        if (x == -1) return false;
  55.  
  56.     synchronized(All[myall]) 
  57.        if ((x != 0) || (y != 0)) All[myall].move(x,y);
  58.     
  59.     for (g=0;g<10;++g) {
  60.      synchronized(All[g]) {
  61.        if ((All[g].x != 0) || (All[g].y != 0)) { 
  62.         dataout.write(All[g].x);
  63.         dataout.write(All[g].y);
  64.         }
  65.         }
  66.        
  67.     }
  68.        dataout.write(-1);
  69.        dataout.write(-1);
  70.        dataout.flush();   
  71.       
  72.      return true;
  73.      }
  74.  
  75.  
  76.  
  77.  
  78. }
  79.     
  80.  
  81.  
  82.     
  83.  
  84.